package com.xgq.drink.service;

import com.xgq.drink.entity.R;

/**
 * 聊天群组服务接口
 */
public interface IChatGroupService {
    
    /**
     * 创建聊天群组
     * @param ownerId 群主ID
     * @param groupName 群组名称
     * @param groupAvatar 群组头像
     * @param announcement 群公告
     * @return 结果
     */
    R createChatGroup(String ownerId, String groupName, String groupAvatar, String announcement);
    
    /**
     * 更新群组信息
     * @param groupId 群组ID
     * @param groupName 群组名称
     * @param groupAvatar 群组头像
     * @param announcement 群公告
     * @param userId 操作用户ID
     * @return 结果
     */
    R updateChatGroup(String groupId, String groupName, String groupAvatar, String announcement, String userId);
    
    /**
     * 解散群组
     * @param groupId 群组ID
     * @param userId 操作用户ID
     * @return 结果
     */
    R dismissChatGroup(String groupId, String userId);
    
    /**
     * 获取用户群组列表
     * @param userId 用户ID
     * @return 结果
     */
    R getUserChatGroups(String userId);
    
    /**
     * 获取群组详情
     * @param groupId 群组ID
     * @return 结果
     */
    R getChatGroupDetail(String groupId);
    
    /**
     * 添加群组成员
     * @param groupId 群组ID
     * @param userId 用户ID
     * @param role 角色
     * @param operatorId 操作者ID
     * @return 结果
     */
    R addGroupMember(String groupId, String userId, Integer role, String operatorId);
    
    /**
     * 移除群组成员
     * @param groupId 群组ID
     * @param userId 用户ID
     * @param operatorId 操作者ID
     * @return 结果
     */
    R removeGroupMember(String groupId, String userId, String operatorId);
    
    /**
     * 更新成员角色
     * @param groupId 群组ID
     * @param userId 用户ID
     * @param role 角色
     * @param operatorId 操作者ID
     * @return 结果
     */
    R updateMemberRole(String groupId, String userId, Integer role, String operatorId);
    
    /**
     * 获取群组成员列表
     * @param groupId 群组ID
     * @return 结果
     */
    R getGroupMembers(String groupId);
    
    /**
     * 退出群组
     * @param groupId 群组ID
     * @param userId 用户ID
     * @return 结果
     */
    R quitGroup(String groupId, String userId);
} 